Algorytm hp-adaptacji
Algorytm automatycznej hp adaptacji został po raz pierwszy szczegółowo opisany w książkach prof. Leszka Demkowicza, matematyka polskiego pochodzenia, pracującego na Uniwersytecie Teksańskim w Austin. Analizę właściwości matematycznych algorytmu hp-adaptacji dokonał prof. Ivo Babuška, amerykanin czeskiego pochodzenia, również pracujący na Uniwersytecie Teksańskim w Austin [1] [2] [3] [4].
- Algorytm automatycznej hp adaptacji (siatka początkowa, wymagana dokładność, maksymalna liczba iteracji)
- siatka rzadka = siatka początkowa
- pętla i = 1 do maksymalnej liczby iteracji
- Rozwiąż problem obliczeniowy na aktualnej siatce rzadkiej (na przykład problem projekcji bitmapy lub problem transportu ciepła) uzyskując rozwiązanie \( u_{h,p} \)
- siatka gęsta = siatka rzadka
- Połam każdy element siatki rzadkiej na 4 elementy (w przypadku elementów prostokątnych w dwóch wymiarach) lub 8 elementów (w przypadku elementów sześciennych w trzech wymiarach) (możliwe również łamania elementów trójkątnych w dwóch wymiarach i elementów czworościennych, pryzmatycznych i piramid w trzech wymiarach) oraz zwiększ stopień wielomianów o jeden w kążdym kierunku na każdym elemencie (co jest naturalne wprzypadku elementów prostokątnych i sześciennych, natomiast wymaga doprecyzowania w przypadku elementów innego rodzaju)
- Rozwiąż problem obliczeniowy na aktualnej siatce gęstej uzyskując rozwiązanie \( u_{h/2,p+1} \)
- Bład maksymalny \( K_{max}=0 \)
- Pętla po elementach \( K \) siatki rzadkiej
- Dla każdego elementu siatki rzadkiej oszacuj błąd względny (normę różnicy pomiędzy rozwiązaniem na siatce rzadkiej a gęstej) \( K_{rel}=\| u_{h,p} - u_{h/2,p+1} \|_K = \int_K \left( u_{h,p}-u_{h/2,p+1} \right)^2 + \left( \frac{\partial u_{h,p}-u_{h/2,p+1}}{\partial x} \right)^2 + \left( \frac{\partial u_{h,p}-u_{h/2,p+1}}{\partial y} \right)^2 \)
- Jeśli \( K_{rel}>K_{max} \) wówczas \( K_{max}=K_{rel} \)
- Koniec pętli po elementach
- Jeśli \( K_{max}> \) wymaganej dokładności, wówczas koniec.
- Pętla po elementach \( K \) siatki rzadkiej
- Jeśli \( K_{rel}>0.33 K_{max} \) wówczas wybierz optymalny sposób adaptacji elementu z siatki rzadkiej i zaaplikuj go do elementu \( K \) siatki rzadkiej
- Koniec pętli po elementach
- Koniec iteracji
Algorytm hp-adaptacji zilustrowany jest na rysunkach Rys. 1 - Rys. 5.
Konwencja przyjęta podczas rysowania siatek obliczeniowych jest następująca. Kolory na rysunkach Rys. 1, Rys. 3 i Rys. 5 oznaczają stopnie wielomianów rozpiętych na krawędziach i wnętrzach elementów. Na każdej krawędzi ustalony jest jeden stopień wielomianu, natomiast na każdym wnętrzu elementu ustalone są stopień w kierunku poziomym oraz stopień w kierunku pionowym.
Na przykład, na rysunku Rys. 1 wszystkie wielomiany na wszystkich krawędziach mają stopień 2, oraz wszystkie wielomiany na wnętrzach wszystkich elementów mają stopień 2 w kierunku pionowym i poziomym. Na rysunku Rys. 3 wszystkie wielomiany na wszystkich krawędziach mają stopień 3, oraz wszystkie wielomiany na wnętrzach wszystkich elementów mają stopień 3 w kierunku pionowym i poziomym. Z koleji na rysunku Rys. 5 przeglądając elementy wierszami od lewej do prawej strony, w pierwszym wierszu na pierwszym elemencie wszystkie wielomiany na krawędziach mają stopień 2, z wyjątkiem wielomianu na dolnej krawędzi elementu, który ma stopień 1. Na pierwszym elemencie wielomiany we wnętrzu mają stopień 2 w kierunku pionowym i poziomym. Na drugim elemencie, na krawędziach lewej, górnej i dolnej, wielomiany mają stopień 2, natomiast we wnętrzu stopień 3 w kierunku pionowym i stopień 2 w kierunku poziomym. Na trzecim i czwartym elemencie wszystkie wielomiany na krawędziach mają stopień 3. Podobnie wielomiany we wnętrzach w kierunkach pionowym i poziomym. W drugim wierszu elementów, pierwszy element (czyli piąty globalnie) posiada wielomiany stopnia 3 na lewej i prawej krawędzi, wielomian stopnia 1 na górnej i dolnej krawędzi. We wnętrzu element ten posiada wielomiany stopnia 1 w kierunku poziomym i wielomiany stopnia 3 w kierunku pionowym. Drugi element w drugim wierszu posiada stopień wielomianu 2 w kierunku poziomym oraz stopień wielomianu 3 w kierunku pionowym. Na trzecim i czwartym elemncie wszystkie wielomiany na wszystkich krawędziach mają stopień 3, oraz wszystkie wielomiany na wnętrzach wszystkich elementów mają stopień 3 w kierunku pionowym i poziomym. Pozostałe elementy w trzecim i czwartym wierszu mają wielomiany rozłożone symetrycznie w stosunku do wielomianów w pierwszym i drugim wierszu na pierwszym i drugim elemencie.
W jaki sposób dokonywany jest wybór optymalnego sposobu adaptacji pojedynczego elementu? Zauważmy że w przypadku algorytmu hp adaptacji mamy wiele możliwości modyfikacji pojedynczego elementu:
- Pozostawienie elementu bez zmian
- Możliwe jest połamanie elementu na dwa nowe elementy w kierunku pionowym
- Możliwe jest połamanie elementu na dwa nowe elementy w kierunku poziomym
- Możliwe jest połamanie elementu na cztery nowe elementy (dwa w kierunku poziomym i dwa w kierunku pionowym)
Ponadto dla każdego połamanego elementu możliwa jest modyfikacja stopnia wielomianów we wnętrzu elementu
- Pozostawienie stopni elementu bez zmian
- Możliwe jest podniesienie stopnia we wnętrzu elementu w kierunku poziomym \( (p_h,p_v)\rightarrow (p_h+1,p_v) \)
- Możliwe jest podniesienie stopnia we wnętrzu elementu w kierunku pionowym \( (p_h,p_v)\rightarrow (p_h,p_v+1) \)
- Możliwe jest podniesienie stopnia we wnętrzu elementu w kierunku poziomym i pionowym \( (p_h,p_v)\rightarrow (p_h+1,p_v+1) \)
Stopnie na krawędziach zmodyfikowanych elementów ustalane są na podstawie reguły minimum. Innymi słowy stopień wielomianu na krawędzi dzielonej przez dwa sąsiadujące elementy ustalany jest jako minimum stopni we wnętrzu elementów w odpowiednim kierunku.
Dla krawędzi pionowej otoczonej przez dwa elementy \( (p^1_h,p^2_v) \) oraz \( (p^2_h,p^2_v) \) ustalamy stopień \( p=\textrm{min} \{ p^1_v,p^2,v\} \).
Dla krawędzi poziomej otoczonej przez dwa elementy \( (p^1_h,p^2_v) \) oraz \( (p^2_h,p^2_v) \) ustalamy stopień \( p=\textrm{min} \{ p^1_h,p^2,h\} \).
Mamy więc bardzo dużo możliwości adaptacji pojedynczego elementu (szacując na podstawie wymienionych możliwych rodzajów adaptacji mamy 4 (modyfikacje stopnia elementu bez łamania elementu) + 4*4 (połamanie elementu na dwa elementy w kierunku poziomym i po cztery możliwości modyfikacji stopnia każdego elementu) + 4*4 (połamanie elementu na dwa elementy w kierunku pionowym i po cztery możliwości modyfikacji stopnia każdego elementu) + 4*4*4*4 (połamanie elementu na cztery elementy i po cztery możliwości modyfikacji stopnia każdego elementu). W sumie 4+4*4+4*4+4*4*4*4=292 możliwości.
W jaki sposób podejmowana jest decyzja o wyborze rodzaju adaptacji pojedynczego elementu?
Decyzja podejmowana jest zgodnie z następującym algorytmem.
- Wybór optymalnej strategii adaptacji elementu \( K \) (rozwiązanie na siatce żadkiej zawężone do elementu \( u_{h,p} \), rozwiązanie na siatce gęstej zawężone do elementu \( u_{h/2,p+1} \))
- Pętla po możliwych rodzajach adaptacji elementu od 1 do 292
- Największa prędkość spadku błędu = 0
- Optymalna adaptacja = 0
- Zrób kopię \( J \), elementu \( K \), i wykonaj na nim rozważaną adaptację
- Oblicz projekcję \( w \) rozwiązania na siatce gęstej \( u_{h/2,p+1} \) na adaptowany element \( J \)
- Oblicz o ile spadnie błąd względny jeśli wykonamy adaptacje reprezentowaną przez kod, spadek błędu(kod)= \( \|u_{h/2,p+1}-u_{h,p}\|_K-\|u_{h/2,p+1}-w\|_K \)
- Oblicz ile niewiadomych (ile funkcji bazowych) musimy dodać żeby zrealizować adaptację reprezentowaną przez kod, koszt adaptacji (kod)
- Oblicz i zapamiętaj prędkość spadku błędu (kod) = spadek błędu (kod) / koszt adaptacji(kod)
- Jeśli prędkość spadku błędu (kod) jest większa niż największa prędkość spadku błędu, to zapamiętaj największa wartość spadku błędu = pedkość spadku błędu (kod), optymalna adaptacja=kod
- Koniec pętli po możliwych rodzajach adaptacji
- Wykonaj na elemencie \( K \) znalezioną optymalną adaptację
Innymi słowy, wybieramy taki rodzaj adaptacji dla elementu, który pozwala uzyskać największy spadek błędu najmniejszym kosztem. Wielkość ta reprezentowana jest przez prędkość spadku błędu, która rośnie wraz ze spadkiem błędu, ale maleje wraz z poniesionym kosztym (z liczbą funkcji dodaną do elemetu, ponieważ koszt obliczenia na danym elemencie zależy od liczby niewiadomych, które są współczynnikami funkcji bazowych). Algorytm ten zilustrowany jest na rysunku Rys. 6
Dla przykładowego problemu transportu ciepła na obszarze w kształcie litery L możliwe jest uzyskanie siatki hp adaptacyjnej która pozwala na rozwiązanie problemu z błędem względnym 0.0001. Siatka taka przedstawiona jest na rysunkach Rys. 7 - Rys. 13
Algorytm automatycznej hp adaptacji jest więc bardzo skomplikowany i trudny do zaimplementowania. Dlaczego więc wart jest on naszego zainteresowania? Rozważmy możliwe różne algorytmy adaptacyjne dla przykładowego problemu transportu ciepła na obszarze w kształcie litery L, czyli
- Algorytm jednorodnej h adaptacji, w którym równomiernie na całym obszarze zwiększana jest liczba elementów
- Algorytm jednorodnej p adaptacji, używający siatki zbudowanej z 3 elementów i zwiększający równomiernie stopień wielomianów we wnętrzach wszystkich elementów w kierunku poziomym oraz pionowym, oraz stopień wielomianów na wszystkich krawędziach
- Algorytm jednorodnej p adaptacji, używający siatki zbudowanej z 12 elementów i zwiększający równomiernie stopień wielomianów we wnętrzach wszystkich elementów w kierunku poziomym oraz pionowym, oraz stopień wielomianów na wszystkich krawędziach
- Algorytm automatycznej p adaptacji, zwiększający stopień wielomianów we wnętrzach wybranych elementów w wybranych kierunkach, i modyfikujący stopnie na krawędziach zgodnie z regułą minimum
- Algorytm automatycznej h adaptacji, łamiący wybrane elementy w wybranych kierunkach
- Algorytm automatycznej hp adaptacji, opisany w tym rozdziale
Jeśli narysujemy wykres zbieżności tych algorytmów w taki sposób, że na osi poziomej umieścimy rozmiar siatki rozumiany jako liczbę funkcji bazowych na całej siatce, co odpowiada liczbie niewiadomych współczynników tych funkcji bazowych czyli rozmiarowi macierzy układu równań do rozwiązania, a na osi pionowej błąd wzgłędny liczony w normie H1 pomiędzy rozwiązaniem na siatce rzadkiej i siatce gęstej
\( \|u_{h,p}-u_{h/2,p+1}\|_{H^1}=\frac{\int_{\Omega} (u_{h,p}-u_{h/2,p+1})^2+(\frac{\partial (u_{h,p}-u_{h/2,p+1}}{\partial x})^2+(\frac{\partial (u_{h,p}-u_{h/2,p+1}}{\partial x})^2 }{\int_{\Omega} (u_{h/2,p+1})^2+(\frac{\partial (u_{h/2,p+1}}{\partial x})^2+(\frac{\partial (u_{h/2,p+1}}{\partial x})^2 } \)
wówczas okaże się że jedynie algorytm automatycznej hp adaptacji posiada cechę zbieżności eksponencjalnej. Jest on zdecydowanie najszybszy, i potrafi rozwiązać zadany problem obliczeniowy z dokładnością niemożliwą do uzyskania przez inne algorytmy adaptacyjne.
W praktyce większość problemów inżynieryjnych wymaga dokładności z zakresu 5 procent i wielomianów kwadratowych. Są jednak takie zadania obliczeniowe, gdzie wysoka dokładność rozwiązania jest niezbędna. Przykładem takich zadań obliczeniowych są na przykład symulacje przepływów wokół skrzydeł samolotów, które wymagają bardzo bardzo dużej dokładności w warstwie przyściennej na skrzydłach samolotu, lub symulacje propagacji fal elektromagnetzcznych w warstwach górotworu, w celu identyfikacji złóż ropy naftowej, które wymagają bardzo dużej dokładności w okolicy anteny odbiorczej.
Bibliografia
1. Leszek Demkowicz: Computing with hp-Adaptive Finite Elements, Vol. I. One and Two Dimensional Elliptic and Maxwell Problems, Taylor & Francis, CRC Press 2006, dostęp:18.10.20192. Leszek Demkowicz, Jason Kurtz, David Pardo, Maciej Paszyński, Waldemar Rachowicz, Adam Zdunek A.: Computing with hp-Adaptive Finite Elements, Vol. II.Frontiers: Three Dimensional Elliptic and Maxwell Problems with Applications, Taylor & Francis, CRC Press 2007, dostęp:18.10.2019
3. Ivo Babuška, B. Q. Guo : The hp-version of the finite element method, part 1, Computational mechanics, Maryland Collage Park Campus 1986, dostęp:18.10.2019
4. Ivo Babuška, B. Q. Guo: The hp-version of the finite element method, part 2, Computational mechanics, Maryland Collage Park Campus 1986, dostęp:18.10.2019